package com.ytjj.qmyx.admin.dao;

import com.ytjj.qmyx.admin.model.request.channel.ChannelGoodsRequest;
import com.ytjj.qmyx.admin.model.request.goods.GetEvaluationFeedbackRequest;
import com.ytjj.qmyx.admin.model.request.goods.GetEvaluationInfoRequest;
import com.ytjj.qmyx.admin.model.request.goods.GoodsRequest;
import com.ytjj.qmyx.admin.model.response.goods.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 *
 *  *
 **/
public interface GoodsDao {

    GoodsResponse getGoodsInfo(Integer productId);

    GoodsResponse getGoodsInfoV2(Integer productId);

    List<ProductSkuKeyResponse> findSku(Integer productId);

    List<ProductImgResponse> findImg(@Param("productId") Integer productId, @Param("type") String banner);

    List<ProductSpecResponse> findSpec(Integer productId);

    void deleteSkuKey(Integer productId);

    void deleteSkuValue(Integer productId);

    void deleteSpec(Integer productId);

    void deleteSpecAndIgnoreIds(Integer productId, List<Integer> ignoreIds);

    void deleteImg(@Param("productId")Integer productId,@Param("type")String type);

    void saveSpec(@Param("productId") Integer productId, @Param("spec") List<ProductSpecResponse> spec);

    void saveSkuKey(ProductSkuKeyResponse productSkuKeyRequest);

    void saveSkuValue(@Param("productId") Integer productId, @Param("skuKeyId") Integer skuKeyId, @Param("skuValue") List<ProductSkuValueResponse> skuValue);

    void saveImg(@Param("img") List<ProductImgResponse> img);

    void updateGoods(GoodsRequest goodsRequest);

    void updateGoodsV2(GoodsRequest goodsRequest);

    List<EvaluationInfoResponse> findEvaluationInfo(GetEvaluationInfoRequest request);

    List<EvaluationFeedbackResponse> findEvaluationFeedback(GetEvaluationFeedbackRequest request);

    List<EvaluationInfoDetailResponse> findEvaluationInfoDetail(Integer productId);

    void saveSpecInfo(ProductSpecResponse productSpecResponse);

    void updateSpecInfo(ProductSpecResponse productSpecResponse);

    /**
     * 根据Id同步规格图片
     */
    void updateSpecById(@Param("proImg") String proImg,@Param("id") Integer id);

    Integer updateBankerColumn(@Param("productId") Integer productId, @Param("bankerColumnId") Integer bankerColumnId);

    Integer updateZeroProductStatus(@Param("productId") Integer productId, @Param("isZeroProduct") Integer isZeroProduct);

    List<EvaluationDetailedResponse> getEvaluationDetailed(GetEvaluationFeedbackRequest request);

    List<EvaluationDetailedInfoResponse> getEvaluationDetailedInfo(Integer id);

    void updateGoodsTwo(GoodsRequest goodsRequest);

    List<ProductSpecResponse> findSpecTwo(Integer productId);

    void deleteImgApp(Integer productId);

    void saveImgApp(@Param("img") List<ProductImgResponse> img);

    void updateSpecInfoApp(ProductSpecResponse productSpecResponse);

    List<ProductImgResponse> findImgApp(@Param("productId")Integer productId,@Param("type") String type);

    List<ProductSpecResponse> findSpecApp(Integer productId);

    void updateGoodsNew(ChannelGoodsRequest goodsRequest);

    /**
     * 更新商品标题和名称
     */
    void updateProductLongTitle(@Param("productId")Integer productId,@Param("longTitle") String longTitle,@Param("productName") String productName,@Param("productImg") String productImg);
}
